home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-12-24 | 4.0 KB | 239 lines | [TEXT/PJMM] |
-
- program ParserDriver;
-
- uses
-
- Globals, Commands, Inverse, InputAMatrix, Eval, AllocateHandles;
-
-
- label
- 222, 995, 997, 998, 999, 9999;
-
- var
-
- i, j, randommod, kmat, mrows, ncols, matpointer: longint;
- x: extended;
- vRefNum: integer;
- windowsize: rect;
- line, result, name: str255;
- ch: char;
- savename: stringsize;
- err: OSErr;
- fileinfo: fInfo;
- randommatrix: boolean;
-
-
- begin
-
- AllocateParserHandles;
-
- varfilename := 'variablefile';
- varfileopen := false;
- dummyopen := false;
-
- decplace := 5;
- decplaceplus10 := decplace + 10;
-
- for i := 1 to maxnumberfiles do
- begin
- mfileopen^^[i] := false;
- mfilenew^^[i] := false;
- matrixnew^^[i] := false;
- matrixstoredinfile^^[i] := false;
- end;
-
- Hideall;
- setrect(windowsize, 0, 38, 520, 340);
- settextrect(windowsize);
- showtext;
-
- numvariables := 0;
- randommod := 100;
- bignumber := 100;
-
- readvariables;
-
-
- 998:
-
- error := '';
- numnodes := 0;
-
- write(blank);
- readln(line);
-
- if (pos('quit', line) <> 0) then
- goto 999;
-
- if (pos('changebig', line) <> 0) then
- begin
- writeln('read in your value for bignumber');
- write(blank);
- readln(bignumber);
- goto 998;
- end;
-
-
- if (pos('creatematrix', line) <> 0) then
- begin
-
- write(blank);
- readln(savename);
-
- if savename = '' then
- goto 998;
-
- randommatrix := false;
- writeln('Random matrix? y or n');
- write(blank);
- readln(ch);
-
- if (ch = 'y') or (ch = 'Y') then
- begin
- randommatrix := true;
- writeln('read in mod value');
- write(blank);
- readln(randommod);
- end;
- writeln('read in number of rows and cols');
- write(blank);
- readln(mrows);
- write(blank);
- readln(ncols);
- InputAMatrix(savename, kmat, mrows, ncols, randommod, randommatrix);
- goto 998;
- end;
-
-
- if (pos('readmatrix', line) <> 0) then
- begin
- write(blank);
- readln(savename);
- readmatrix(savename);
- goto 998;
- end;
-
-
- if (pos('dec', line) <> 0) then
- begin
- setdecimal;
- goto 998;
- end;
-
-
- if (pos('cls', line) <> 0) then
- begin
- clearscreen(line);
- goto 998;
- end;
-
- if (pos('clm', line) <> 0) then
- begin
- for i := 1 to numvariables do
- begin
- savename := strvar^^[i]^^;
- deletevariable(savename);
- end;
- numvariables := 0;
- goto 998;
- end;
-
- if pos('delete', line) <> 0 then
- begin
-
- 222:
- write(blank);
- readln(savename);
- if (savename = '') then
- goto 998;
- deletevariable(savename);
- goto 222;
- end;
-
- if line = '' then
- goto 998;
-
- if (pos('listv', line) <> 0) then
- begin
- listvariables;
- goto 998;
- end;
-
- for i := 1 to numvariables do
- begin
- j := numvariables + 1 - i;
- if strvar^^[j]^^ = line then
- begin
- savename := strvar^^[j]^^;
- readmatrix(savename);
- goto 998;
- end;
- end;
-
- result := eval(line);
-
- if (line = 'real') then
- writeln(result);
-
- if (line = 'matrix') then
- begin
- readstring(result, x);
- matpointer := round(x);
- savename := strvar^^[matpointer]^^;
- readmatrix(savename);
- end;
-
- if (line = 'error') then
- writeln(result);
-
- goto 998;
-
- 999:
-
- if numvariables > 0 then
- begin
- writeln('Do you want to save your current variables for the next session? y/n');
- 997:
- writeln(blank);
- readln(ch);
- if (ch = 'n') or (ch = 'N') then
- begin
- if varfileopen then
- begin
- rewrite(varfile);
- close(varfile);
- varfileopen := false;
- end;
- if numvariables > 0 then
- for i := 1 to numvariables do
- begin
- err := GetVol(@name, vRefNum);
- name := strvar^^[i]^^;
- err := FSDelete(name, vRefNum);
- end;
- goto 995;
- end;
- if (ch = 'y') or (ch = 'Y') then
- storevariables;
- if not ((ch = 'y') or (ch = 'Y') or (ch = 'n') or (ch = 'N')) then
- begin
- writeln('Should be a y, Y, n, or N ');
- goto 997;
- end;
- if varfileopen then
- begin
- close(varfile);
- varfileopen := false;
- err := GetVol(@name, vRefNum);
- name := varfilename;
- fileinfo.fdFlags := fInvisible;
- err := SetFInfo(name, vRefNum, fileinfo);
- end;
- end;
-
- 995:
-
- DisposeOfParserHandles;
-
- 9999:
- end.